// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CC_LAYERS_LAYER_CLIENT_H_
#define CC_LAYERS_LAYER_CLIENT_H_

#include <memory>

#include "cc/base/cc_export.h"

namespace base {
namespace trace_event {
    class ConvertableToTraceFormat;
}
}

namespace cc {

class Layer;

class CC_EXPORT LayerClient {
public:
    // Returns a pointer to a debug info object, if one has been computed.
    // If not, returns nullptr.
    // If the returned pointer is non-nullptr, the caller takes
    // ownership of the pointer.
    //
    // A pointer to the layer is provided for the convenience of layer clients
    // which service multiple layers.
    virtual std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
    TakeDebugInfo(Layer* layer) = 0;
    virtual void didUpdateMainThreadScrollingReasons() = 0;
    virtual void didChangeScrollbarsHidden(bool) = 0;

protected:
    virtual ~LayerClient() { }
};

} // namespace cc

#endif // CC_LAYERS_LAYER_CLIENT_H_
